package com.csw.scala

import java.io.{BufferedReader, FileReader}

import scala.io.Source




object Demo05Base {
  def main(args: Array[String]): Unit = {
    /**
      * 变量
      * val:常量：不能再指向其他的对象，相当于java中给变量增加final修饰
      * var:变量：可以再指向其他的对象
      *
      * 一般尽量使用val
      */
    val x: Int = 100
    println(x)
    val j = x + 1
    println(j)

    var y = 200
    y = 300
    println(y)

    /**
      * 类型推断
      */

    //自动类型推断
      val str1 = "java"
    println(str1)
    //手动加上类型
    val str2: String = "java"
    println(str2)
    //多态，父类的引用指向子类
    val str3: Object = "10"
    println(str3)

    /**
      * 类型转换
      *
      * 在scala中只要确定了类型转换没有问题，则直接使用to进行类型转换
      */
    val a = "100"
    //java中类型转换
    val java = Integer.parseInt(a)
    println(java)

    //scala中类型转换
    //-----隐式转换：可以给对象动态增加方法----
    val scala = a.toInt
    println(scala)

    /**
      * 文件读写
      */
    val fileReader: FileReader =new FileReader("Scala/data/students.txt")
    val br: BufferedReader =new BufferedReader(fileReader)
    //读第一条数据
    var line= br.readLine()
    //判断是否为空
    while (line!=null){
      println(line)

    //读下一条数据
    line=br.readLine()
    }
    br.close()

    /**
      *
      */
    //实际上为println("=".*(50）)
    println("=" * 50)

    /**
      * scala中读取数据
      */
    val source =Source.fromFile("Scala/data/students.txt")

    /**
      * 迭代器的数据可能并没有完全加载到内存中
      *
      * 迭代器只能迭代一次
      */
    //读取所有行，返回一个迭代器
    val line1 = source.getLines()
    for (elem <- line1) {
      println(elem)
    }

    //链式调用
    val s1 = Source.fromFile("Scala/data/students.txt")
      .getLines()
    for (elem <- s1) {
      println(elem)
    }

    /**
      * JDBC:使用方式和java中没有区别
      */
//    //1、加载驱动
//    Class.forName("com.mysql.jdbc.Driver")
//
//    //2、创建链接
//    val con = DriverManager.getConnection("jdbc:mysql://master:3306/user","root", "123456")
//
//    //查询数据
//    println(con)

    /**
      * 字符串拼接
      *
      */
    val k = 100
    //底层就是stringBuilder
    val ss = s"java,scala,$k"
    println(ss)

    //java的字符串拼接方式
    val stringbuilder = new StringBuilder
    stringbuilder.append("java")
    stringbuilder.append(k)

    println(stringbuilder)
  }


}

